package juego.tests;

import juego.modelo.Punto;
import juego.modelo.PuntoDePoder;
import juego.modelo.Tablero;
import junit.framework.TestCase;

public class PuntoDePoderTest extends TestCase {

	Tablero tablero = Tablero.getInstance();
	
	public void testPuntoDePoderTest() {
		try {
			int nivel = 1;
			Punto pos = new Punto(1, 1);
			PuntoDePoder punto = new PuntoDePoder(nivel, pos);
			assert (punto != null);
		} catch (IllegalArgumentException e) {
			fail();
		}
	}
	public void testPuntoDePoderError() {
		try {
			int nivel = 1;
			Punto pos = null;
			PuntoDePoder punto = new PuntoDePoder(nivel, pos);
			fail();
		} catch (IllegalArgumentException e) {
			assertTrue (true);
		}
	}
	
	public void testComerError() {
		try {
			int nivel = 1;
			Punto pos = new Punto(1, 1);
			PuntoDePoder punto = new PuntoDePoder(nivel, pos);
			punto.comer();
			fail();
		} catch (NullPointerException e) {
			assertTrue(true);
		}
	}

	public void testComer() {
		int nivel = 1;
		Punto pos = new Punto(1, 5);
		PuntoDePoder punto = new PuntoDePoder(nivel, pos);
		tablero.crearJuego(nivel);
		try {
			int puntaje = tablero.getPuntaje();
			punto.comer();
			assertEquals(puntaje + 50, tablero.getPuntaje());
		} catch (NullPointerException e) {
			fail();
		}
	}

	public void testGetX() {
		PuntoDePoder punto = new PuntoDePoder(1, new Punto(10, 20));
		int x = punto.getX() / tablero.getDistanciaEntreComida();
		assertEquals(x, 10);
	}

	public void testGetY() {
		PuntoDePoder punto = new PuntoDePoder(1, new Punto(10, 20));
		int y = punto.getY() / tablero.getDistanciaEntreComida();
		assertEquals(y, 20);
	}
}